home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-06 / btr515.exe / BTR515.TXT < prev    next >
Text File  |  1993-07-02  |  54KB  |  1,584 lines

  1. Filename:  BTR515.TXT
  2. Products:  Btrieve NLM v5.15
  3.            Btrieve VAP v5.15
  4. Date:      JULY 2 1992
  5.  
  6.    This file accompanies the NLM and VAP environment patches for Btrieve
  7.    v5.15 programs.
  8.  
  9. ****************** NOTICE  ***********************
  10. This is the last patch release for Btrieve NLM version 5.15.  Btrieve
  11. NLM version 5.15 is no longer the current version of the Btrieve NLM
  12. and Novell is only updating the most current version of the Btrieve
  13. NLM.
  14.  
  15. This patch set does not contain patches for Btrieve requesters.
  16. Instead, version replacement modules have been included in the
  17. file BTRREQ.EXE.  BTRREQ.EXE contains the latest requesters for
  18. DOS, Windows, OS/2, and UnixWare. The latest requester should be
  19. use with all 5.x versions of the VAP and NLM and all 6.x versions
  20. of the NLM.
  21. See the BTRREQ.TXT file contained in BTRREQ.EXE for details.
  22. ***************************************************
  23.  
  24.  
  25.  
  26. ============================================================================
  27.  
  28. Disclaimer
  29. ==========
  30.  
  31.    Novell, Inc. makes no representations or warranties with respect to any
  32.    NetWare software, and specifically disclaims any express or implied
  33.    warranties of merchantability, title, or fitness for a particular
  34.    purpose.
  35.  
  36.    Distribution of any NetWare software is forbidden without the express
  37.    written consent of Novell, Inc.  Further, Novell reserves the right to
  38.    discontinue distribution of any NetWare software.
  39.  
  40.    Novell is not responsible for lost profits or revenue, loss of use of
  41.    the software, loss of data, costs of re-creating lost data, the cost of
  42.    any substitute equipment or program, or claims by any party other than
  43.    you.  Novell strongly recommends a backup be made before any software is
  44.    installed.  Technical support for this software may be provided at the
  45.    discretion of Novell.
  46.  
  47. ============================================================================
  48.  
  49. Contents
  50. ========
  51.  
  52.     Patch File Information
  53.     Installation Procedure
  54.     Source File Information
  55.     Patch Set Descriptions
  56.  
  57. ============================================================================
  58.  
  59. Patch File Information
  60. ======================
  61.  
  62.    Patch Set Filename:  BTR515.EXE
  63.  
  64.    Date:  4/19/93
  65.  
  66. Files Included:      
  67. BTR515   DOC    This file
  68. PATCH515 CMD      2366 09-04-92  11:16a
  69. BPATRTRN 515      1019 09-04-92  11:16a
  70. BPATRTRV 515       255 09-04-92  11:16a
  71. BPATNLM  515     18941 04-09-93  12:51p
  72. PI       EXE     33520 09-04-92  11:16a
  73. PATCH515 BAT      2366 09-04-92  11:16a
  74. BPATVAP  515      9088 04-15-93  12:23p
  75.  
  76.  
  77. ============================================================================
  78.  
  79. Installation Procedure
  80. ======================
  81.  
  82.    The installation procedure for the Btrieve v5.15 patch set is as
  83.    follows:
  84.  
  85.    1.  Copy all the files to the directory on your system that contains the
  86.        files to be patched, and make this the default directory.
  87.  
  88.    2.  Ensure that PI.EXE is available on the system.  PI.EXE is a patch
  89.        utility that Novell provides to install product patches.  You can
  90.        use PI.EXE in DOS or OS/2 environments.
  91.  
  92.        CAUTION:  Make sure you are patching the original (unpatched),
  93.                  released version of the software, since PI.EXE cannot
  94.                  patch a patched version. Refer to the following section,
  95.                  "Source File Information," for a list of the original
  96.                  files.
  97.  
  98.                  The first time you patch the ORIGINAL software, the patch
  99.                  utility renames these files using the .ORG extension.
  100.  
  101.    3.  Run the batch or files files relevant to your situation:
  102.  
  103.        PATCH515.BAT   Corrects the VAP and NLM versions under DOS
  104.        PATCH515.CMD   Corrects the VAP and NLM versions under OS/2
  105.  
  106. ============================================================================
  107.  
  108. Source File Information
  109. =======================
  110.  
  111.    To ensure you are patching the original files, compare the files to be
  112.    patched with the following list, which shows the byte size and the date
  113.    and time stamps for the original releases:
  114.  
  115.    Source File            Size     Original Date   Time
  116.    -----------            ----     -------------   ----
  117.    BSERVER  VAP         132015      1-24-91         5:49p
  118.    BROUTER  VAP          12860      1-31-91        10:21a
  119.    BROUTER  NLM          15884      1-24-91        11:38a
  120.    BTRIEVE  NLM          64616      2-19-91        11:22a
  121.  
  122. ============================================================================
  123.  
  124. Patch Set Descriptions
  125. ======================
  126.  
  127.    This section describes each patch in the patch set.  For each patch, the
  128.    description includes one or more keywords that may help you quickly
  129.    determine whether the patch you need for a specific problem is included
  130.    in this patch set.
  131.  
  132.    * * * * * * * * *
  133.  
  134.    Patch Number:      1
  135.  
  136.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15
  137.  
  138.    Keywords:          INDEX, SUPPLEMENTAL, EXTENDED, NULL
  139.  
  140.    Problem Fixed by This Patch:
  141.  
  142.    When Btrieve creates a supplemental index using a null key and an
  143.    extended key type, if the null value is an even number, Btrieve does not
  144.    recognize the extended key type.  Instead, it uses the third bit of the
  145.    key flags word to flag the key as either binary or string.
  146.  
  147.    * * * * * * * * *
  148.  
  149.    Patch Number:      2
  150.  
  151.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  152.  
  153.    Keywords:          UPDATE, INSERT, GET POSITION, COMPRESSED, DUPLICATE
  154.  
  155.    Problem Fixed by This Patch:
  156.  
  157.    This patch corrects a problem that causes positioning to be lost after
  158.    you perform an Update operation on a file with compressed records.
  159.    Performing a Get Position operation causes Btrieve to return a Status 8
  160.    (Invalid Positioning); a Get Next operation skips to the next key value,
  161.    ignoring the next duplicate, if any exist.  Similarly, after an Insert
  162.    operation is performed on a file with a compressed record, a Get
  163.    Previous operation skips to the previous key value, instead of the
  164.    previous duplicate, if any exist.
  165.  
  166.    * * * * * * * * *
  167.  
  168.    Patch Number:      3
  169.  
  170.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  171.  
  172.    Keywords:          POSITION, DELETE, STEP FIRST, STEP PREVIOUS
  173.  
  174.    Problem Fixed by This Patch:
  175.  
  176.    This patch corrects a problem that sometimes occurs when a Step Previous
  177.    operation follows a Step First operation and a Delete operation, causing
  178.    Btrieve to return a Status 80 (Conflict) because positioning has been
  179.    lost on the failed Step Previous operation.  This patch restores
  180.    positioning.
  181.  
  182.    * * * * * * * * *
  183.  
  184.    Patch Number:      4
  185.  
  186.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  187.  
  188.    Keywords:          TTS, PRE-IMAGE
  189.  
  190.    Problem Fixed by This Patch:
  191.  
  192.    This patch fixes a problem causing systems using the Transaction
  193.    Tracking System (TTS) under heavy load to intermittently return a Status
  194.    14 (Pre-Image Open Error).  Access problems continue until the file is
  195.    closed and reopened.  The problem does not occur when the BSPXCOM -W
  196.    parameter is set to 1.  This patch implements a semaphore to control
  197.    TTS task switching.
  198.  
  199.    * * * * * * * * *
  200.  
  201.    Patch Number:      5
  202.  
  203.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15; BROUTER.VAP, v5.15
  204.                       Btrieve NLM - BTRIEVE.NLM, v5.15; BROUTER.NLM, v5.15
  205.  
  206.                       Not included in the patch set is a patch for:
  207.                       Btrieve Requesters (DOS) - BREQUEST.EXE, v5.16;
  208.                                          (OS/2) - BTRCALLS.DLL, v5.17
  209.                       This problem is source fixed in the 6.0 requesters 
  210.                       contained in this patch kit.  
  211.  
  212.    Keywords:          EXTENDED, INSERT, BUFFER
  213.  
  214.    Problem Fixed by This Patch:
  215.  
  216.    After an Extended Insert operation, Btrieve should pass back the data
  217.    buffer with a count of records successfully inserted in the first word
  218.    of the buffer.  This patch corrects a problem that prevents the data
  219.    buffer from being sent to the application if an Extended Insert returns
  220.    a nonzero status.
  221.  
  222.    * * * * * * * * *
  223.  
  224.    Patch Number:      6
  225.  
  226.    Platform/Product:  Btrieve NLM - BROUTER.NLM, v5.15
  227.  
  228.    Keywords:          BROUTER, REMOTE, BUFFER, LENGTH
  229.  
  230.    Problem Fixed by This Patch:
  231.  
  232.    When you use BROUTER to access a remote server, it fails to update the
  233.    application's data buffer length parameter.  This patch enables the
  234.    update.
  235.  
  236.    * * * * * * * * *
  237.  
  238.    Patch Number:      7
  239.  
  240.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  241.  
  242.    Keywords:          UPDATE, DELETE, CONFLICT
  243.  
  244.    Problem Fixed by This Patch:
  245.  
  246.    When you perform an Update or Delete operation, you may receive a Status
  247.    80 (Conflict) even though only one workstation is accessing the file.
  248.    This problem occurs only if the record you are updating or deleting
  249.    contains a data pattern in which all bytes except the first four are
  250.    binary zeros.
  251.  
  252.    * * * * * * * * *
  253.  
  254.    Patch Number:      9
  255.  
  256.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  257.  
  258.    Keywords:          UPDATE, GET NEXT
  259.  
  260.    Problem Fixed by This Patch:
  261.  
  262.    When two clients are pointing to the same record in a file and one of
  263.    them performs an Update operation that changes its key, the second
  264.    client receives an unpredictable, out-of-sequence record the next time
  265.    it performs a Get Next operation.  This patch invalidates the second
  266.    client's current record but leaves the next and previous pointers
  267.    unchanged to maintain the relative position for the second client.
  268.  
  269.    * * * * * * * * *
  270.  
  271.    Patch Number:      10
  272.  
  273.    Platform/Product:  Not included in the patch set is a patch for:
  274.                       Btrieve Requester (DOS) - BREQUEST.EXE, v5.16
  275.                       This problem is source fixed in the 6.0 requester
  276.                       contained in this patch kit.  
  277.  
  278.    Keywords:          SPX, ESTABLISH CONNECTION, SEGMENT
  279.  
  280.    Problem Fixed by This Patch:
  281.  
  282.    Due to incorrect segment usage in the SPXEstablish-Connection library
  283.    call, 2 bytes of the caller's data area are overwritten whenever a new
  284.    connection is made to a Btrieve server.  This patch corrects the
  285.    segment.
  286.  
  287.    * * * * * * * * *
  288.  
  289.    Patch Number:      11
  290.  
  291.    Platform/Product:  Btrieve NLM - BROUTER.NLM, v5.15
  292.                       Not included in the patch set is a patch for:
  293.                       Btrieve Requester (DOS) - BREQUEST.EXE, v5.16
  294.                       This problem is source fixed in the 6.0 requester
  295.                       contained in this patch kit.  
  296.  
  297.    Keywords:          BUFFER, GET, STEP NEXT
  298.  
  299.    Problem Fixed by This Patch:
  300.  
  301.    This patch corrects a problem in Patch #5 that returns corrupt data in
  302.    the data buffer after any Get or Step Next operation returns a Status 9
  303.    (End of File).
  304.  
  305.    * * * * * * * * *
  306.  
  307.    Patch Number:      12
  308.  
  309.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  310.  
  311.    Keywords:          PROTECTION CHECK, INTERRUPT, UNLOAD
  312.  
  313.    Problem Fixed by This Patch:
  314.  
  315.    This patch corrects a problem that causes protection-check NLMs to
  316.    interrupt when the Btrieve NLM is unloading.  The interruption occurs
  317.    because of data being written to a byte of memory that has just
  318.    been freed.  This patch uses other memory to prevent this interruption.
  319.  
  320.    * * * * * * * * *
  321.  
  322.    Patch Number:      13
  323.  
  324.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  325.  
  326.    Keywords:          ARCNET, VAP, SAP, ADVERTISER
  327.  
  328.    Problem Fixed by This Patch:
  329.  
  330.    When all workstations are shut down on an ArcNet network, the VAP
  331.    operating system returns an error to all VAPs using the Service
  332.    Advertising Protocol (SAP).  This causes BSERVER to issue an Error Log
  333.    message of "Send Failure in Advertiser."  This patch prevents the error
  334.    message from being sent.  The patch is normally commented out, since
  335.    BSERVER issues this error message only on the ArcNet, but may be enabled
  336.    by ArcNet users who find their error logs becoming congested by the
  337.    error message.
  338.  
  339.    * * * * * * * * *
  340.  
  341.    Patch Number:      14
  342.  
  343.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15
  344.  
  345.    Keywords:          STATUS 2, TASK, TTS
  346.  
  347.    Problem Fixed by This Patch:
  348.  
  349.    With multiple workstations involved in transactions, a client can
  350.    receive erratic and nonrepeatable Status 2s (I/O Error) on operations
  351.    ranging from OPENs to GETs.  Btrieve returns a Status 2 because a client
  352.    has opened the file to a Transaction Tracking System (TTS) task and then
  353.    closed the file for rotation (due to limited handles).
  354.  
  355.    The initial client must reopen the file on the next access, but only
  356.    that client, as the owner task, can do so; all other tasks get errors
  357.    that translate to Status 2.  The problem disappears as soon as the first
  358.    client accesses or ends the transaction.  This patch allows other
  359.    clients to temporarily assume the right task number.
  360.  
  361.    * * * * * * * * *
  362.  
  363.    Patch Number:      16
  364.  
  365.    Platform/Product:  Btrieve VAP - BTRIEVE.VAP, v5.15
  366.  
  367.    Keywords:          STAT, ZERO
  368.  
  369.    Problem Fixed by This Patch:
  370.  
  371.    The STAT command may erroneously return zero for unused pages whenever
  372.    the number is greater than 32 KB (32768).  This patch forces a nonzero
  373.    return.
  374.  
  375.    * * * * * * * * *
  376.  
  377.    Patch Number:      17
  378.  
  379.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  380.  
  381.    Keywords:          UPDATE, GET PREVIOUS
  382.  
  383.    Problem Fixed by This Patch:
  384.  
  385.    Btrieve v5.10 patch #9 causes the following problem:  after an Update
  386.    operation that changes a record's key value, a subsequent Get Previous
  387.    operation skips any records whose key value is a duplicate of the new
  388.    key value of the record that was just changed. This patch corrects the
  389.    problem so that the Get Previous operation does not skip records with
  390.    duplicate key values.
  391.  
  392.    * * * * * * * * *
  393.  
  394.    Patch Number:      19
  395.  
  396.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15
  397.  
  398.    Keywords:          UPDATE, GET NEXT
  399.  
  400.    Problem Fixed by This Patch:
  401.  
  402.    When two clients are pointing to the same record in a file and one of
  403.    them performs an Update operation that changes its key, the second
  404.    client receives an unpredictable, out-of-sequence record the next time
  405.    it performs a Get Next operation.  This patch invalidates the second
  406.    client's current record but leaves the next and previous pointers
  407.    unchanged to maintain the relative position for the second client.
  408.  
  409.    * * * * * * * * *
  410.  
  411.    Patch Number:      20
  412.  
  413.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15
  414.  
  415.    Keywords:          SUPPLEMENTAL, INDEX, ACCELERATED, DUPLICATE, INFINITE
  416.  
  417.    Problem Fixed by This Patch:
  418.  
  419.    This patch corrects a problem that causes Btrieve to enter an infinite
  420.    loop if you build a supplemental index on a file opened in accelerated
  421.    mode, and if Btrieve detects a duplicate key value in the opened file
  422.    when the supplemental index specifies that duplicates are not allowed.
  423.  
  424.    * * * * * * * * *
  425.  
  426.    Patch Number:      21
  427.  
  428.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  429.  
  430.    Keywords:          LOG, PARSING, VOLUME
  431.  
  432.    Problem Fixed by This Patch:
  433.  
  434.    This patch makes it possible to specify a log file on a different volume
  435.    from the data file to be logged.  Applying this patch to the Btrieve NLM
  436.    corrects filename parsing to allow you to place the log file on any
  437.    other volume of the same server.
  438.  
  439.    * * * * * * * * *
  440.  
  441.    Patch Number:      22
  442.  
  443.    Platform/Product:  Not included in the patch set is a patch for:
  444.                       Btrieve Requester (DOS) - BREQUEST.EXE, v5.16
  445.                       This problem is source fixed in the 6.0 requester
  446.                       contained in this patch kit.  
  447.  
  448.    Keywords:          SET DIRECTORY, DIRECTORY ERROR, DRIVE
  449.  
  450.    Problem Fixed by This Patch:
  451.  
  452.    On a Set Directory operation, if you specify only a drive letter and
  453.    colon in the key buffer, Btrieve returns a Status 35 (Directory Error)
  454.    and the default drive is not changed.  This patch corrects the problem
  455.    so that the default drive is changed to the drive letter you specify in
  456.    the key buffer.
  457.  
  458.    * * * * * * * * *
  459.  
  460.    Patch Number:      23
  461.  
  462.    Platform/Product:  Btrieve VAP - BSERVER.VAP, v5.15
  463.  
  464.    Keywords:          GET POSITION, POSITION, SUCCESSFUL OPERATION
  465.  
  466.    Problem Fixed by This Patch:
  467.  
  468.    If you execute a Get Position operation without first establishing
  469.    position, Btrieve returns a Status 0 (Successful Operation) instead of a
  470.    Status 8 (Invalid Positioning).  The operation also returns a Status 0
  471.    when it is performed on an empty file.  This patch corrects position
  472.    information set by the Open operation.
  473.  
  474.    * * * * * * * * *
  475.  
  476.    Patch Number:      24
  477.  
  478.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  479.  
  480.    Keywords:          KEY-BIASED, +50
  481.  
  482.    Problem Fixed by This Patch:
  483.  
  484.    This patch improves Btrieve's performance on key-biased (+50)
  485.    operations.
  486.  
  487.    * * * * * * * * *
  488.  
  489.    Patch Number:      25
  490.  
  491.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  492.  
  493.    Keywords:          ALTER TABLE, NETWARE SQL, ABEND
  494.  
  495.    Problem Fixed by This Patch:
  496.  
  497.    This patch corrects a problem that abends the server if the "filespec"
  498.    string in the data buffer is longer than 64 bytes.  The problem is in an
  499.    undocumented Btrieve function call that NetWare SQL uses in its Alter
  500.    Table statement.
  501.  
  502.    * * * * * * * * *
  503.  
  504.    Patch Number:      26
  505.  
  506.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  507.  
  508.    Keywords:          DROP, SUPPLEMENTAL, INDEX, LOCKED
  509.  
  510.    Problem Fixed by This Patch:
  511.  
  512.    This patch corrects a problem that allows a Drop Supplemental Index
  513.    operation to proceed on a file locked in a transaction by another user,
  514.    disrupting that user's transaction.  As in Btrieve for DOS v5.10, this
  515.    transaction now returns a Status 85 (File In Use).
  516.  
  517.    * * * * * * * * *
  518.  
  519.    Patch Number:      27
  520.  
  521.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  522.  
  523.    Keywords:          REBOOT, FILE, OPEN
  524.  
  525.    Problem Fixed by This Patch:
  526.  
  527.    This patch fixes the following problem:  If, after opening a file and
  528.    starting a transaction to insert records, you restart your system during
  529.    the transaction, the transaction and the file are left open.  This
  530.    problem occurs because of the BSPXCOM watchdog-reset mechanism fails to
  531.    reset the connection.
  532.  
  533.    * * * * * * * * *
  534.  
  535.    Patch Number:      28
  536.  
  537.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  538.  
  539.    Keywords:          CREATE, SUPPLEMENTAL, INDEX, ABEND
  540.  
  541.    Problem Fixed by This Patch:
  542.  
  543.    This patch fixes a problem that causes the server to abend when the
  544.    Create Supplemental Index operation returns a nonzero status.  This
  545.    problem is caused by a failure of the drop supplemental index algorithm.
  546.  
  547.    * * * * * * * * *
  548.  
  549.    Patch Number:      29
  550.  
  551.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  552.  
  553.    Keywords:          CREATE, SUPPLEMENTAL, INDEX, SKIP, NULL, KEY
  554.  
  555.    Problem Fixed by This Patch:
  556.  
  557.    This patch fixes the following problem:  The Create Supplemental Index
  558.    operation fails to skip records with null-value keys even though the
  559.    manual key flag is set in the key description file.
  560.  
  561.    * * * * * * * * *
  562.  
  563.    Patch Number:      30
  564.  
  565.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  566.  
  567.    Keywords:          STATUS, -1, ERROR
  568.  
  569.    Problem Fixed by This Patch:
  570.  
  571.    When multiple users attempt to update the same file, Btrieve may
  572.    occasionally return a Status -1 due to an internal error.  This patch
  573.    prevents this invalid, internal-only error code from being returned.
  574.  
  575.    * * * * * * * * *
  576.  
  577.    Patch Number:      31
  578.  
  579.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  580.  
  581.    Keywords:          FREE, SPACE, THRESHOLD
  582.  
  583.    Problem Fixed by This Patch:
  584.  
  585.    This patch fixes a problem with the Free Space Threshold feature.  The
  586.    NLM starts a new page for variable portions of records before there is
  587.    less space left on the page than specified in the free space threshold.
  588.    This patch corrects the way the free space threshold is calculated.
  589.  
  590.    * * * * * * * * *
  591.  
  592.    Patch Number:      34
  593.  
  594.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  595.  
  596.    Keywords:          STATUS 2, STATUS 15, I/O, ERROR
  597.  
  598.    Problem Fixed by This Patch:
  599.  
  600.    This patch prevents a small timing window produced when many users are
  601.    updating, inserting, and deleting data in a file and another user opens
  602.    the file.  During this timing window, the file can become corrupted,
  603.    causing Btrieve to return a Status 2 (I/O Error) and a Status 15
  604.    (Pre-Image I/O Error).
  605.  
  606.    * * * * * * * * *
  607.  
  608.    Patch Number:      35
  609.  
  610.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  611.  
  612.    Keywords:          KEY-BIASED, +50
  613.  
  614.    Problem Fixed by This Patch:
  615.  
  616.    This patch improves Btrieve's performance on key-biased (+50)
  617.    operations.
  618.  
  619.    * * * * * * * * *
  620.  
  621.    Patch Number:      36
  622.  
  623.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  624.  
  625.    Keywords:          ABEND, GET GREATER, GET EQUAL
  626.  
  627.    Problem Fixed by This Patch:
  628.  
  629.    This patch prevents a server from abending following a Get Greater or
  630.    Equal operation on a particular key value in a corrupted file.  This
  631.    situation very rarely occurs.
  632.  
  633.    * * * * * * * * *
  634.  
  635.    Patch Number:      37
  636.  
  637.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  638.  
  639.    Keywords:          EXTENDED, GET, KEY-ONLY
  640.  
  641.    Problem Fixed by This Patch:
  642.  
  643.    When an Extended Get operation following a key-only operation returns a
  644.    Status 9 (End of File), the data buffer may be unchanged or may contain
  645.    corrupted data.  This patch completes the handling of extended
  646.    operations after key-only operations.
  647.  
  648.    * * * * * * * * *
  649.  
  650.    Patch Number:      38
  651.  
  652.    Platform/Product:  Btrieve NLM - BROUTER.NLM, v5.15
  653.                       Not included in the patch set is a patch for:
  654.                       Btrieve Requester (DOS) - BREQUEST.EXE, v5.16
  655.                       This problem is source fixed in the 6.0 requester
  656.                       contained in this patch kit.  
  657.  
  658.    Keywords:          INSERT, STATUS 22, DATA, BUFFER, LENGTH
  659.  
  660.    Problem Fixed by This Patch:
  661.  
  662.    During an Insert operation, if the data buffer is big enough to contain
  663.    the fixed-portion of the record but too small for the entire record,
  664.    Btrieve returns a Status 22 (Data Buffer Length) and does not insert the
  665.    record.  However, the key buffer may be incorrectly altered.  This patch
  666.    ensures that the key buffer is not altered during unsuccessful Insert,
  667.    Insert Extended, and Update operations.
  668.  
  669.    * * * * * * * * *
  670.  
  671.    Patch Number:      39
  672.  
  673.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  674.  
  675.    Keywords:          GPI, PRE-IMAGE
  676.  
  677.    Problem Fixed by This Patch:
  678.  
  679.    When a large (32+ KB) pre-image file is produced, as in a large
  680.    transaction, a value greater than 32 KB may be erroneously treated as
  681.    "signed" and is sign-extended with hex code FFs.  This is later
  682.    interpreted as an extremely large unsigned value when it is passed to
  683.    the operating system, causing a General Protection Interrupt (GPI).
  684.    This patch ensures that conversions are performed without sign
  685.    extension.
  686.  
  687.    * * * * * * * * *
  688.  
  689.  
  690.    Patch Number:      40
  691.  
  692.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  693.  
  694.    Keywords:          ABEND, HANDLE, CLOSE, READ ONLY, OPEN
  695.  
  696.    Problems Fixed by This Patch:
  697.  
  698.    Erratic Btrieve errors, including a General Protection Interrupt (GPI),
  699.    can be caused by the following scenario:
  700.  
  701.    - A file is opened to a single read-only handle that is in the process
  702.      of closing.
  703.  
  704.    - A request is received to open another handle in read-write mode,
  705.      causing a timing window that allows the file's table entry to be
  706.      deleted.
  707.  
  708.    This patch eliminates the timing window.
  709.  
  710.    * * * * * * * * *
  711.  
  712.    Patch Number:      42
  713.  
  714.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  715.  
  716.    Keywords:          POSITION, DUPLICATE, SUPPLEMENTAL, INDEX
  717.  
  718.    Problem Fixed by This Patch:
  719.  
  720.    This patch ensures that the correct position is reached when you perform
  721.    a Get Next or Get Previous operation following a Delete operation on a
  722.    file that contains a supplemental index with duplicate values.
  723.  
  724.    * * * * * * * * *
  725.  
  726.    Patch Number:      43
  727.  
  728.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  729.  
  730.    Keywords:          TRANSACTION, FLAG
  731.  
  732.    Problem Fixed by This Patch:
  733.  
  734.    If a Btrieve transaction file exists when you load BTRIEVE.NLM and is
  735.    not flagged transactional, BTRIEVE.TRN is not erased when the NLM is
  736.    unloaded.  This patch ensures that the transaction file is always erased
  737.    when BTRIEVE.NLM is unloaded.
  738.  
  739.    * * * * * * * * *
  740.  
  741.    Patch Number:      44
  742.  
  743.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  744.  
  745.    Keywords:          TRANSACTION, MODE, NORMAL, READ ONLY, STATUS 85
  746.  
  747.    Problem Fixed by This Patch:
  748.  
  749.    If a file opened in normal mode is used inside a transaction, another
  750.    workstation cannot open this file in read-only mode in a transaction.
  751.    The Open operation returns a Status 85 (File Locked).  This patch allows
  752.    the Open operation to be completed successfully.
  753.  
  754.    * * * * * * * * *
  755.  
  756.    Patch Number:      45
  757.  
  758.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  759.  
  760.    Keywords:          MODE, ACCELERATED, STATUS 5
  761.  
  762.    Problem Fixed by This Patch:
  763.  
  764.    This patch prevents file corruption on files opened in accelerated mode
  765.    that return a Status 5 (Duplicate Key Value) during an Update operation.
  766.    Damaged files may not display obvious symptoms of the corruption.  (In
  767.    the reported case, a key was lost from the B-tree.)
  768.  
  769.    * * * * * * * * *
  770.  
  771.    Patch Number:      46
  772.  
  773.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  774.  
  775.    Keywords:          GET DIRECT, DELETE, STATUS 2, STATUS 8, STATUS 9
  776.  
  777.    Problems Fixed by This Patch:
  778.  
  779.    The patch corrects the following problems with the Get Direct operation:
  780.  
  781.    -   Performing a Get Direct operation after deletion of the record by
  782.        another application returns a Status 2 (I/O Error) instead of a
  783.        Status 8 (Lost Position).
  784.  
  785.    -   If a file contains records with duplicate values, a Get Next
  786.        operation performed after a Get Direct returns a Status 9 (End of
  787.        File) instead of the next record.
  788.  
  789.     -  The status codes returned by a Get Direct operation following a
  790.        Delete  operation are inconsistent.
  791.  
  792.     -  In certain cases, after deletion of the last record, Get Direct
  793.        operations do not return a status code on the record just deleted.
  794.  
  795.    * * * * * * * * *
  796.  
  797.    Patch Number:      47
  798.  
  799.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  800.  
  801.    Keywords:          DELETE, STATUS 2
  802.  
  803.    Problem Fixed by This Patch:
  804.  
  805.    In special situations, performing a Delete operation results in either a
  806.    Status 2 (I/O Error) or the loss of a key from the B-tree.  This patch
  807.    prevents key loss and ensures file integrity.
  808.  
  809.    * * * * * * * * *
  810.  
  811.    Patch Number:      48
  812.  
  813.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  814.  
  815.    Keywords:          LOG, LOGGING
  816.  
  817.    Problem Fixed by This Patch:
  818.  
  819.    The logging feature of Btrieve can be disabled on some servers.  This
  820.    patch ensures that logging functions correctly.
  821.  
  822.    * * * * * * * * *
  823.  
  824.    Patch Number:      49
  825.  
  826.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  827.  
  828.    Keywords:          STATUS 52, PRE-IMAGE
  829.  
  830.    Problem Fixed by This Patch:
  831.  
  832.    When you open a file that requires recovery from the pre-image file, and
  833.    the file has a page size larger than 1024 bytes, you may receive a
  834.    Status 52 (Error Writing Cache) if any other file is open.  This patch
  835.    corrects the problem and adds new logic to Btrieve that helps control
  836.    the size of the pre-image file.
  837.  
  838.    * * * * * * * * *
  839.  
  840.    Patch Number:      52
  841.  
  842.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  843.  
  844.    Keywords:          STATUS 8, STATUS 80, GET POSITION, UPDATE
  845.  
  846.    Problem Fixed by This Patch:
  847.  
  848.    Building a supplemental index can cause the server utilization to go to
  849.    100%, and other workstations making Btrieve calls to receive a Status 95
  850.    (Session No Longer Valid).  This patch corrects the problem by
  851.    decreasing the amount of time Btrieve uses to sort the keys.
  852.  
  853.    * * * * * * * * *
  854.  
  855.    Patch Number:      53
  856.  
  857.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  858.  
  859.    Keywords:          STATUS 19, ABEND
  860.  
  861.    Problem Fixed by This Patch:
  862.  
  863.    Reading or updating a corrupted file causes the server to abend.  This
  864.    patch prevents an abend and returns a Status 19 (Unrecoverable Error).
  865.  
  866.    * * * * * * * * *
  867.  
  868.    Patch Number:      54
  869.  
  870.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  871.  
  872.    Keywords:          KEY ONLY, AUTOINC, STATUS 5
  873.  
  874.    Problem Fixed by This Patch:
  875.  
  876.    On a key-only file, if an autoincrement field does not begin at the
  877.    first byte, the second insert with a binary zero value in that field
  878.    causes Btrieve to return a Status 5 (Duplicate Key).  This patch allows
  879.    the second insert to succeed and returns a Status 0 (Successful
  880.    Completion).
  881.  
  882.    * * * * * * * * *
  883.  
  884.    Patch Number:      55
  885.  
  886.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  887.  
  888.    Keywords:          SUPPLEMENTAL INDEX
  889.  
  890.    Problem Fixed by This Patch:
  891.  
  892.    When you add two supplemental indexes and then remove one of them, you
  893.    can no longer access the other index.  This patch enables you to access
  894.    the remaining index.
  895.  
  896.    * * * * * * * * *
  897.  
  898.    Patch Number:      56
  899.  
  900.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  901.  
  902.    Keywords:          BREQUEST, READ-ONLY, STATUS 94
  903.  
  904.    Problem Fixed by This Patch:
  905.  
  906.    If you are using BREQUEST.EXE v6.0, attempting to open a file in
  907.    read-only mode when you have only Read rights to the file causes Btrieve
  908.    to deny the Open operation and return a Status 94 (Permission Error).
  909.    This patch allows you to open the file.
  910.  
  911.    * * * * * * * * *
  912.  
  913.    Patch Number:      57
  914.  
  915.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  916.  
  917.    Keywords:          KEY-ONLY, GET NEXT EXTENDED, STATUS 19
  918.  
  919.    Problem Fixed by This Patch:
  920.  
  921.    A Get Next Extended operation following a Greater Than Or Equal
  922.    operation with key-only bias causes Btrieve to return a Status 19
  923.    (Unrecoverable Error).  This patch allows the Get Next Extended
  924.    operation to succeed with a Status 0 (Successful Completion).
  925.  
  926.    * * * * * * * * *
  927.  
  928.    Patch Number:      58
  929.  
  930.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  931.  
  932.    Keywords:          EXTENDED GET, EXTENDED STEP, STATUS 62, STATUS 22
  933.  
  934.    Problem Fixed by This Patch:
  935.  
  936.    In the Btrieve NLM, setting up an Extended Step or Extended Get
  937.    operation to return only record positions (NumOfFields = 0) without any
  938.    record data causes Btrieve to return a Status 62 (Incorrect Descriptor).
  939.  
  940.    * * * * * * * * *
  941.  
  942.    Patch Number:      59
  943.  
  944.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  945.  
  946.    Keywords:          STATUS 80, UPDATE, DELETE
  947.  
  948.    Problem Fixed by This Patch:
  949.  
  950.    If a workstation tries to update or delete a record that a second
  951.    workstation has changed since the first workstation read that record,
  952.    Btrieve returns a Status 80 (Conflict).  However, Btrieve incorrectly
  953.    allows the conflict condition to be cleared after the first workstation
  954.    performs any of the following operations:  Stat, Unlock, Set Owner,
  955.    Clear Owner, Create Index, or Drop Index.  This patch corrects the
  956.    problem by forcing the first workstation to reread the record before
  957.    changing it.
  958.  
  959.    * * * * * * * * *
  960.  
  961.    Patch Number:      60
  962.  
  963.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  964.  
  965.    Keywords:          HANG, ABEND, TTS
  966.  
  967.    Problem Fixed by This Patch:
  968.  
  969.    When the NetWare Transaction Tracking System (TTS) is performing disk
  970.    I/O and detects a hardware error, the TTS dismounts the volume and
  971.    Btrieve abends the server.  This patch prevents the abend.
  972.  
  973.    * * * * * * * * *
  974.  
  975.    Patch Number:      61
  976.  
  977.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  978.  
  979.    Keywords:          ZSTRING, LSTRING, NULL, MANUAL
  980.  
  981.    Problem Fixed by This Patch:
  982.  
  983.    This patch pertains only to zstring and lstring keys that are flagged
  984.    with the NULL or MANUAL attribute.  If an application updates a record
  985.    and changes the key from NULL or MANUAL to non-NULL (or vice versa) by
  986.    changing bytes beyond the end of the key from the null character to any
  987.    other character (or vice versa), Btrieve does not update the index to
  988.    reflect the change in the key.  This patch ensures that Btrieve updates
  989.    the index.
  990.  
  991.    * * * * * * * * *
  992.  
  993.    Patch Number:      62
  994.  
  995.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  996.  
  997.    Keywords:          OPEN, CLOSE, LOOP
  998.  
  999.    Problem Fixed by This Patch:
  1000.  
  1001.    Btrieve enters an infinite loop when you perform a large number of Open
  1002.    and Close operations on the same file.  This patch enables Btrieve to
  1003.    handle multiple Open and Close operations and prevents the infinite
  1004.    loop.
  1005.  
  1006.    * * * * * * * * *
  1007.  
  1008.    Patch Number:      63
  1009.  
  1010.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1011.  
  1012.    Keywords:          GET NEXT, UPDATE, PATCH 51, PATCH 9
  1013.  
  1014.    Problem Fixed by This Patch:
  1015.  
  1016.    Patch #51 reintroduced a problem that an earlier patch (Patch #9 for the
  1017.    Btrieve NLM) had corrected.  The problem is that when two clients are
  1018.    pointing to the same record in a file and one of them performs an update
  1019.    operation that changes the record's key, the second client receives an
  1020.    unpredictable, out-of-sequence record the next time it performs a Get Next
  1021.    operation.
  1022.  
  1023.    This patch (#63) invalidates the second client's current record but
  1024.    leaves the next and previous pointers unchanged, thus maintaining the
  1025.    relative position for the second client.
  1026.  
  1027.    * * * * * * * * *
  1028.  
  1029.    Patch Number:      64
  1030.  
  1031.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1032.  
  1033.    Keywords:          KEY-ONLY, STATUS 9, STATUS 19, HANG
  1034.  
  1035.    Problem Fixed by This Patch:
  1036.  
  1037.    Get Greater Than(8) or Get Less Than(10) operations do not work
  1038.    correctly in case of key-only files if the key value specified for
  1039.    the operation exists in the file.  It might return a wrong record or
  1040.    status 9 or status 19 incorrectly, or it might even cause the server
  1041.    to hang, depending on the file and the key value involved.
  1042.  
  1043.    * * * * * * * * *
  1044.  
  1045.    Patch Number:      65
  1046.  
  1047.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1048.  
  1049.    Keywords:          STATUS 37, TRANSACTION, BEGIN, ROLL FORWARD, LOGGING
  1050.  
  1051.    Problem Fixed by This Patch:
  1052.  
  1053.    If, having started a transaction, the first operation is an insert and the
  1054.    record has a duplicate key and logging is active for that file, Btrieve
  1055.    will erroneously make a second BEGIN_TRANSACTION entry in the log file. 
  1056.    This second entry causes a status 37 when rolling forward the file. 
  1057.    This patch prevents Btrieve from logging the same BEGIN_TRANSACTION twice.
  1058.  
  1059.    * * * * * * * * *
  1060.  
  1061.    Patch Number:      66
  1062.  
  1063.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1064.  
  1065.    Keywords:          GET DIRECT, GET POSITION, STATUS 43, EXTENED INSERT
  1066.  
  1067.    Problem Fixed by This Patch:
  1068.  
  1069.    A GET_DIRECT could return a status 43 right after a successful
  1070.    GET_POSITION, even though no other workstation deleted the
  1071.    record. It happened when the EOF had been reached by using STEP or
  1072.    STEP_EXTENDED operations.
  1073.    In addition, the logical and physical position information were not set
  1074.    properly on an EXTENDED_INSERT when one of the inserts failed because of
  1075.    duplicate keys.
  1076.    This patch corrects the position information in both cases.
  1077.  
  1078.    * * * * * * * * *
  1079.  
  1080.    Patch Number:      67
  1081.  
  1082.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1083.  
  1084.    Keywords:          TTS, UPDATE, GET EQUAL, STATUS 7
  1085.  
  1086.    Problem Fixed by This Patch:
  1087.  
  1088.    If all patches are applied to the BTRIEVE.NLM and a data file 
  1089.    is flagged transactional (TTS),  an update following a Get Equal
  1090.    returns a status 7 (Different Key Number).  The problem was
  1091.    introduced by patch #49.  This patch fixes the problem with patch
  1092.    #49.  Both this patch and patch #49 must be applied together.
  1093.  
  1094.    * * * * * * * * *
  1095.  
  1096.    Patch Number:      68
  1097.  
  1098.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1099.  
  1100.    Keywords:          DELETE, STATUS 2, STATUS 14, STATUS 15
  1101.  
  1102.    Problem Fixed by This Patch:
  1103.  
  1104.    Fixes a bug which appears only under very special circumstances:
  1105.    If a workstation has no current record in a file (either because it
  1106.    has just opened the file, or because it has deleted its current record)
  1107.    and the workstation attempts to get a record with a lock bias, and
  1108.    the attempt fails because the record is already locked by another user,
  1109.    and then the workstation makes an Update call, instead of a returning
  1110.    a status 8 as it should, Btrieve returns either a status 2 or a status
  1111.    15 (depending on the file's page size).  If a status 15 is returned,
  1112.    and all users of the file then do a Close operation, subsequent attempts
  1113.    to open the file will fail with a status 14.  This patch corrects
  1114.    the problem.
  1115.  
  1116.    * * * * * * * * *
  1117.  
  1118.    Patch Number:      69
  1119.  
  1120.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1121.  
  1122.    Keywords:          PREIMAGE, STATUS 2, STATUS 14, STATUS 15
  1123.  
  1124.    Problem Fixed by This Patch:
  1125.  
  1126.    Under certain rare conditions, Btrieve fails to recover a file's 
  1127.    preimage after an error that would have returned a status 2.  A 
  1128.    status 15 is returned instead, and later attempts to open the file 
  1129.    may fail with a status 14.  This patch ensures that the original 
  1130.    status 2 is returned and that the file's preimage is rolled-back.
  1131.  
  1132.    * * * * * * * * *
  1133.  
  1134.    Patch Number:      70
  1135.  
  1136.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1137.  
  1138.    Keywords:          GET DIRECT, NULL, STATUS 82, STATUS 44
  1139.  
  1140.    Problem Fixed by This Patch:
  1141.  
  1142.    If a data file contains a key with both duplicates and a null 
  1143.    attribute, a GET DIRECT (operation 23) on a record with a null key 
  1144.    could give different status codes (status 82 or status 44) depending 
  1145.    on whether the key is a permanent or a supplemental key. This patch 
  1146.    ensures that the proper status code (status 44, null key path) will 
  1147.    always be returned this GET DIRECT. 
  1148.  
  1149.    * * * * * * * * *
  1150.  
  1151.    Patch Number:      71
  1152.  
  1153.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1154.  
  1155.    Keywords:          PREIMAGE, STATUS 14
  1156.  
  1157.    Problem Fixed by This Patch:
  1158.  
  1159.    If the machine is turned off or rebooted between the time a Btrieve 
  1160.    file has marked as having a preimage file and the time the preimage 
  1161.    file is created, the file cannot be opened. Btrieve returns status 14.
  1162.    This patch fixes the problem caused by a timing window, and it ensures 
  1163.    that the file can be opened.
  1164.  
  1165.    * * * * * * * * *
  1166.  
  1167.    Patch Number:      72
  1168.  
  1169.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1170.  
  1171.    Keywords:          DELETE, GET NEXT, KEY ONLY
  1172.  
  1173.    Problem Fixed by This Patch:
  1174.  
  1175.    Doing a Delete (operation 4) followed by a Get Next (operation 6) 
  1176.    on a key-only file with duplicated key values where the key consists 
  1177.    of more than one segment, the given status or record was not the 
  1178.    proper one.  This patch ensures that both the status and the record 
  1179.    are correct.
  1180.      
  1181.    * * * * * * * * *
  1182.  
  1183.    Patch Number:      73
  1184.  
  1185.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1186.  
  1187.    Keywords:          CORRUPT, VARIABLE, STATUS 2, RECOVER
  1188.  
  1189.    Problem Fixed by This Patch:
  1190.       
  1191.    Given a file with corruption on the variable pages (specifically
  1192.    corrupt page number fields), Btrieve would return a status 2,
  1193.    thwarting efforts to recover the file by using Step Next (or
  1194.    Step Previous operations) to retrieve undamaged records.  This patch 
  1195.    causes Btrieve to return the correct status code, 54 (variable
  1196.    page error), which in addition to returning the first part of the 
  1197.    record, also advances the position block farther into the file so 
  1198.    that subsequent, undamaged records can be retrieved.
  1199.  
  1200.    * * * * * * * * *
  1201.  
  1202.    Patch Number:      74
  1203.  
  1204.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1205.  
  1206.    Keywords:          CORRUPT, RETRIEVE, STATUS 2, RECOVER
  1207.  
  1208.    Problem Fixed by This Patch:
  1209.      
  1210.    When Stepping through a file with corrupted pages (specifically 
  1211.    corrupt page number fields), Btrieve would sometimes have trouble 
  1212.    returning a record from the first good page read after a series of 
  1213.    bad pages.  This patch fixes the problem.
  1214.  
  1215.    * * * * * * * * *
  1216.  
  1217.    Patch Number:      75
  1218.  
  1219.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1220.  
  1221.    Keywords:          GET LESS, STATUS 9, GET POSITION
  1222.  
  1223.    Problem Fixed by This Patch:
  1224.      
  1225.    After an application does a Get Less Than or a Get Less Than 
  1226.    or Equal (opcodes 10 and 11) with an empty file and receives 
  1227.    a status 9 (End of File) error, if it does a Get Position
  1228.    (operation 22), garbage is returned in the data buffer, instead 
  1229.    of a record address and the status code is set to 0, indicating 
  1230.    no error.  This patch ensures that the status code is set to 8, 
  1231.    invalid positioning.
  1232.  
  1233.    * * * * * * * * *
  1234.  
  1235.    Patch Number:      76
  1236.  
  1237.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1238.  
  1239.    Keywords:          OPERATION 11, GET LESS, POSITION, SUPPLEMENTAL
  1240.  
  1241.    Problem Fixed by This Patch:
  1242.  
  1243.    Doing an operation 11 (Get Less or Equal) on a key-only file or on 
  1244.    a file with a supplemental key with duplicates allowed, Btrieve 
  1245.    does not always set the position properly. This patch ensures the 
  1246.    correct positioning in this case.
  1247.       
  1248.    * * * * * * * * *
  1249.  
  1250.    Patch Number:      77 
  1251.  
  1252.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1253.  
  1254.    Keywords:          INSERT, UPDATE, PREIMAGE
  1255.  
  1256.    Problem Fixed by This Patch:
  1257.  
  1258.    During insert and update operations, unnecessary key pages are recorded 
  1259.    in the preimage (.PRE) file.  This patch corrects the problem.
  1260.  
  1261.    * * * * * * * * *
  1262.  
  1263.    Patch Number:      78
  1264.  
  1265.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1266.  
  1267.    Keywords:          ACCELERATED MODE, STATUS 5, CORRUPTION
  1268.  
  1269.    Problem Fixed by This Patch:
  1270.  
  1271.    This patch prevents file corruption on files opened in accelerated mode
  1272.    that return a Status 5 (Duplicate Key Value) during an Update operation.
  1273.    Damaged files may not display obvious symptoms of the corruption.  (In
  1274.    the reported case, a key was lost from the B-tree.)
  1275.  
  1276. GROW PATCH
  1277.  
  1278.    * * * * * * * * *
  1279.  
  1280.    Patch Number:      79
  1281.  
  1282.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1283.  
  1284.    Keywords:          GET DIRECT, DELETE, STATUS 2, STATUS 8, STATUS 9
  1285.  
  1286.    Problems Fixed by This Patch:
  1287.  
  1288.    The patch corrects the following problems with the Get Direct operation:
  1289.  
  1290.    -   Performing a Get Direct operation after deletion of the record by
  1291.        another application returns a Status 2 (I/O Error) instead of a
  1292.        Status 8 (Lost Position).
  1293.  
  1294.    -   If a file contains records with duplicate values, a Get Next
  1295.        operation performed after a Get Direct returns a Status 9 (End of
  1296.        File) instead of the next record.
  1297.  
  1298.     -  The status codes returned by a Get Direct operation following a
  1299.        Delete  operation are inconsistent.
  1300.  
  1301.     -  In certain cases, after deletion of the last record, Get Direct
  1302.        operations do not return a status code on the record just deleted.
  1303.  
  1304.    * * * * * * * * *
  1305.  
  1306.    Patch Number:      80
  1307.  
  1308.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1309.  
  1310.    Keywords:          EXTENDED GET, EXTENDED STEP, STATUS 22
  1311.  
  1312.    Problem Fixed by This Patch:
  1313.  
  1314.    In the Btrieve VAP, setting up an Extended Step or Extended Get
  1315.    operation to return only record positions (NumOfFields = 0) without any
  1316.    record data causes the VAP to return a status 22 if the data buffer is 
  1317.    just as long as required by Btrieve.  This patch corrects the
  1318.    problem so that the data is returned with no error.
  1319.  
  1320.    * * * * * * * * *
  1321.  
  1322.    Patch Number:      81
  1323.  
  1324.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1325.  
  1326.    Keywords:          EXTENDED FILES, STATUS 14, PREIMAGE, OPEN
  1327.  
  1328.    Problem Fixed by This Patch:
  1329.  
  1330.    For extended files, if the machine reboots in the middle of
  1331.    a transaction, a subsequent open would not be able to open the
  1332.    file.  A status 14 would be returned (preimage open error).  This
  1333.    patch corrects the problem.
  1334.  
  1335.    * * * * * * * * *
  1336.  
  1337.    Patch Number:      82
  1338.  
  1339.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1340.  
  1341.    Keywords:          STATUS 80, UPDATE, DELETE
  1342.  
  1343.    Problem Fixed by This Patch:
  1344.  
  1345.    If a workstation tries to update or delete a record that a second
  1346.    workstation has changed since the first workstation read that record,
  1347.    Btrieve returns a Status 80 (Conflict).  However, Btrieve incorrectly
  1348.    allows the conflict condition to be cleared after the first workstation
  1349.    performs any of the following operations:  Stat, Unlock, Set Owner,
  1350.    Clear Owner, Create Index, or Drop Index.  This patch corrects the
  1351.    problem by forcing the first workstation to reread the record before
  1352.    changing it.
  1353.  
  1354.    * * * * * * * * *
  1355.  
  1356.    Patch Number:      83
  1357.  
  1358.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1359.  
  1360.    Keywords:          PATCH 78
  1361.  
  1362.    Problem Fixed by This Patch:
  1363.  
  1364.    This patch fixes a problem that was introduced by patch #78. This 
  1365.    patch fixes the problem with patch #78. Both of these patches should 
  1366.    be used to eliminate the original problem mentioned in the patch #78
  1367.    description.
  1368.  
  1369.    * * * * * * * * *
  1370.  
  1371.    Patch Number:      84
  1372.  
  1373.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1374.  
  1375.    Keywords:          ZSTRING, LSTRING, NULL, MANUAL
  1376.  
  1377.    Problem Fixed by This Patch:
  1378.  
  1379.    This patch pertains only to zstring and lstring keys that are flagged
  1380.    with the NULL or MANUAL attribute.  If an application updates a record
  1381.    and changes the key from NULL or MANUAL to non-NULL (or vice versa) by
  1382.    changing bytes beyond the end of the key from the null character to any
  1383.    other character (or vice versa), Btrieve does not update the index to
  1384.    reflect the change in the key.  This patch ensures that Btrieve updates
  1385.    the index.
  1386.  
  1387.    * * * * * * * * *
  1388.  
  1389.    Patch Number:      85
  1390.  
  1391.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1392.  
  1393.    Keywords:          GET NEXT, UPDATE, GET POSITION
  1394.  
  1395.    Problem Fixed by This Patch:
  1396.  
  1397.    If a client application receives a status 80 on an Update (because
  1398.    a second client has Updated the record since the first client
  1399.    read it), and then the application does a Get Position, an incorrect
  1400.    status 8 will be returned.  This patch fixes the problem so that
  1401.    a status 0 and a valid record address will be returned from the
  1402.    Get Position call.  
  1403.  
  1404.    * * * * * * * * *
  1405.  
  1406.    Patch Number:      86
  1407.  
  1408.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1409.  
  1410.    Keywords:          GET EXTENDED
  1411.  
  1412.    Problem Fixed by This Patch:
  1413.  
  1414.    This patch implements an enhancement to the GET_EXTENDED API to
  1415.    allow it to use the current record as the starting point, rather than
  1416.    the next record.  The header signature "UC" must be used instead of the
  1417.    normal extended get signature, "EG".  This enhancement is present in
  1418.    the NLM without a patch, and is implemented with recent patches in the
  1419.    DOS, Windows, and OS/2 client Btrieves.
  1420.  
  1421.    * * * * * * * * *
  1422.  
  1423.    Patch Number:      87
  1424.  
  1425.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1426.  
  1427.    Keywords:          CASE INSENSITIVE, KEY
  1428.  
  1429.    Problem Fixed by This Patch:
  1430.  
  1431.    This patch implements an enhancement that allows applications to 
  1432.    define case-insensitive keys by setting the 0x0400 bit in the key 
  1433.    flags word for a Create or Create Supplemental Index call.  
  1434.    But, unpatched or older Btrieve engines may misinterpret and even 
  1435.    corrupt these case-insensitive keys.
  1436.  
  1437.    * * * * * * * * *
  1438.  
  1439.    Patch Number:      88
  1440.  
  1441.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1442.  
  1443.    Keywords:          GET DIRECT, NULL, STATUS 82, STATUS 44
  1444.  
  1445.    Problem Fixed by This Patch:
  1446.  
  1447.    If a data file contains a key with both duplicates and a null 
  1448.    attribute, a GET DIRECT (operation 23) on a record with a null key 
  1449.    could give different status codes (status 82 or status 44) depending 
  1450.    on whether the key is a permanent or a supplemental key. This patch 
  1451.    ensures that the proper status code (status 44, null key path) will 
  1452.    always be returned this GET DIRECT. 
  1453.  
  1454.    * * * * * * * * *
  1455.  
  1456.    Patch Number:      89
  1457.  
  1458.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1459.  
  1460.    Keywords:          PREIMAGE, STATUS 14
  1461.  
  1462.    Problem Fixed by This Patch:
  1463.  
  1464.    If the machine is turned off or rebooted between the time a Btrieve
  1465.    file has marked as having a pre-image file and the time the pre-image
  1466.    file is created, the file cannot be opened. Btrieve returns status 14.
  1467.    This patch fixes the problem caused by a timing window, and it ensures
  1468.    that the file can be opened.
  1469.  
  1470.    * * * * * * * * *
  1471.  
  1472.   Patch Number:      90
  1473.  
  1474.    Platform/product:  Btrieve VAP - BSERVER.VAP, v5.15
  1475.  
  1476.    Keywords:          PREALLOCATE, PAGES
  1477.  
  1478.    Problem Fixed by This Patch:
  1479.  
  1480.    When a file is created with the preallocation flag set and the file's 
  1481.    page size multiplied by the number of pages to preallocate is an even 
  1482.    multiple of 65536, an additional 65536 bytes are preallocated to the 
  1483.    file.  This patch corrects the problem so that only the specified 
  1484.    number of pages are preallocated.
  1485.  
  1486.    * * * * * * * * *
  1487.  
  1488.    Patch Number:      91
  1489.  
  1490.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1491.  
  1492.    Keywords:          SUPPLEMENTAL INDEX, STATUS 9, NULL
  1493.  
  1494.    Problem Fixed by This Patch:
  1495.  
  1496.    When creating a supplemental index where the key has a null value defined
  1497.    and all the existing records in the file already contain that null value
  1498.    in the appropriate place, Btrieve returns a status 9 on the create 
  1499.    supplemental index call, and no index is created.
  1500.    This patch fixes the problem by returning a status zero after creating the
  1501.    index with zero number of keys in it.
  1502.  
  1503.    * * * * * * * * *
  1504.  
  1505.    Patch Number:      92
  1506.  
  1507.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1508.  
  1509.    Keywords:          DROP SUPPLEMENTAL INDEX, CORRUPT, OPERATION 31
  1510.  
  1511.    Problem Fixed by This Patch:
  1512.  
  1513.    If an application works on several files at the same time and 
  1514.    the pagesizes of those files are greater than 1024 the first page
  1515.    of one or more files (FCRs) can get corrupted especially if the 
  1516.    Drop Supplemental Index (op. 31) is used. The corruption is usually 
  1517.    located in the second half of the FCR first, but later, doing the same
  1518.    sequence of operations many times, it moves backwards to the beginning
  1519.    of the file. In extreme situation the file could become a non-openable 
  1520.    file by Btrieve.
  1521.    The bug was found in the module where Btrieve opens the file. Actually
  1522.    not the whole FCR was read then later used, just a part of it. But at 
  1523.    completion the FCR with proper size was written down to the disk 
  1524.    eventually with garbage in it.
  1525.    This patch ensures that the whole FCR page will be loaded every time 
  1526.    when it is needed.
  1527.  
  1528.    * * * * * * * * *
  1529.  
  1530.    Patch Number:      93
  1531.  
  1532.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1533.  
  1534.    Keywords:          OWNER NAME, CLEAR OWNER, STATUS 46
  1535.  
  1536.    Problem Fixed by This Patch:
  1537.  
  1538.    This bug applied to files with owner names which allowed non-owner 
  1539.    applications to open them, but not to write to them.  Btrieve was 
  1540.    incorrectly allowing a Clear Owner operation to complete
  1541.    successfully after the application opened the file without its owner
  1542.    name.  Now Btrieve will return the proper error code instead: 46, 
  1543.    Access To File Denied.
  1544.  
  1545.    * * * * * * * * *
  1546.  
  1547.    Patch Number:      94
  1548.  
  1549.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1550.  
  1551.    Keywords:          TRANSACTION, PREIMAGE, LARGE
  1552.  
  1553.    Problem Fixed by This Patch:
  1554.  
  1555.    Users whose applications perform a very large number (several 
  1556.    thousand) of writing operations on any one file inside a single  
  1557.    transaction may have been noticing that, during the course of such 
  1558.    a transaction, the associated preimage file's size would jump from 
  1559.    a large number (say 33 megabytes) to a huge number (approaching 4
  1560.    gigabytes) in an instant, even though there was not 4 gigabytes of 
  1561.    free space on the volume.  This patch fixes this sparse file
  1562.    problem.
  1563.       
  1564.    * * * * * * * * *
  1565.  
  1566.    Patch Number:      95
  1567.  
  1568.    Platform/Product:  Btrieve NLM - BTRIEVE.NLM, v5.15
  1569.  
  1570.    Keywords:          TRANSACTION, PREIMAGE, CORRUPT, STATUS 109
  1571.  
  1572.    Problem Fixed by This Patch:
  1573.  
  1574.    Transactions which insert, update, or delete several
  1575.    thousands of records in any one file can cause a 16-bit
  1576.    counter of pages in the preimage file to overflow.  If the
  1577.    transaction is aborted after the counter has overflowed the
  1578.    Btrieve file would be corrupted.  This patch causes Btrieve
  1579.    to guard against the overflow, and to return a new error
  1580.    status code, 109, to any operation which would trigger the
  1581.    overflow.
  1582.       
  1583. ** End of BTR515.TXT **
  1584.